As an increasing number of applications and services are being made available over networks such as the Internet, an increasing number of content, application, and/or service providers are turning to technologies such as remote resource sharing and cloud computing. Cloud computing, in general, is an approach to providing access to electronic resources through services, such as Web services, where the hardware and/or software used to support those services is dynamically scalable to meet the needs of the services at any given time. A user or customer typically will rent, lease, or otherwise pay for access to resources through the cloud, and thus does not have to purchase and maintain the hardware and/or software to provide access to these resources.
In some environments, multiple users can share resources such as data repositories, wherein the users can concurrently send multiple read and/or write requests to be executed against the same data instance, for example. Problems can arise, however, such as when the number of concurrent requests exceeds the ability of the instance to process those requests, when the available bandwidth for a resource supporting the instance is no longer sufficient, or when the storage capacity for the instance and/or customer is no longer sufficient. In many cases issues such as insufficient storage capacity, number of input/output (I/O) operations per second (IOPS), and/or bandwidth can be addressed by increasing the number and/or amount of resources dedicated to those tasks. Such approaches can be very complicated, however, as almost all the data must be redistributed across resource instances and all mappings for that data updated accordingly. Further, such approaches can require the purchase, installation, and maintenance of additional components that might not otherwise be necessary.